package com.lorenzogao.pley.common.rx.subscriber

import android.content.Context
import android.content.Intent
import android.util.Log
import com.lorenzogao.pley.common.exception.BaseException
import com.lorenzogao.pley.common.rx.RxErrorHandler
import com.lorenzogao.pley.ui.activity.LoginActivity

/**
 * 作者：Lorenzo Gao
 * Date: 2017/12/29
 * Time: 14:56
 * 邮箱：2508719070@qq.com
 * Description:
 */
open abstract class ErrorHandlerSubscriber<T>(protected var mContext: Context) : BaseSubscriber<T>() {

    protected var mRxErrorHandler: RxErrorHandler? = null


    init {
        mRxErrorHandler = RxErrorHandler(mContext!!)
    }

    override fun onError(e: Throwable?) {


        var baseException = mRxErrorHandler!!.handlerError(e!!)

        if (baseException == null) {
            e.printStackTrace()
            Log.d("ErrorHandlerSubscriber", e.message)
        } else {
            if (baseException.code == BaseException.ERROR_TOKEN) {
                toLogin()
            } else {
                mRxErrorHandler!!.showErrorMessage(baseException)
            }
        }

    }

    private fun toLogin() {
        mContext.startActivity(Intent(mContext, LoginActivity::class.java))
    }

}